package com.mrjy.common.util;

import java.util.Random;

public class RandomUtil {
	 public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	 public static final String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	 public static final String NUMBER = "0123456789";
	 /**
	  * 福卡激活是去掉：数字0和字母o
	  */
	 public static final String LETTERCHAR2 = "abcdefghijkllmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	 public static final String NUMBER2 = "123456789";
	 public static final String SERIES = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	 public static final String NUMBERCHAR="0123456789abcdefghijklmnopqrstuvwxyz";
	 
	 /**
	  * 返回一个定长的随机字符串(只包含大小写字母、数字)
	  * 
	  * @param length
	  *            随机字符串长度
	  * @return 随机字符串
	  */
	 public static String generateString(int length) {
	  StringBuffer sb = new StringBuffer();
	  Random random = new Random();
	  for (int i = 0; i < length; i++) {
	   sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));
	  }
	  return sb.toString();
	 }
	 
	 /**
	  * 返回一个定长的随机字符串（只包含小写字母、数字）
	  * @param length
	  * @return
	  */
	 public static String generateNumChar(int length){
		 Random random=new Random();
		 StringBuilder sb=new StringBuilder();
		 for(int i=0;i<length;i++){
			 sb.append(NUMBERCHAR.charAt(random.nextInt(NUMBERCHAR.length())));
		 }
		 return sb.toString();
	 }
	 
	 /**
	  * 返回一个定长的随机字符串(只包含数字)
	  * 
	  * @param length
	  *            随机字符串长度
	  * @return 随机字符串
	  */
	 public static String generateString2(int length) {
		  StringBuffer sb = new StringBuffer();
		  Random random = new Random();
		  for (int i = 0; i < length; i++) {
		   sb.append(NUMBER.charAt(random.nextInt(NUMBER.length())));
		  }
		  return sb.toString();
		 }
	 /**
	  * 返回一个定长的随机字符串(数字0除外，只包含数字)
	  * 
	  * @param length
	  *            随机字符串长度
	  * @return 随机字符串
	  * @author Javin
	  */
	 public static String generateString3(int length) {
		  StringBuffer sb = new StringBuffer();
		  Random random = new Random();
		  for (int i = 0; i < length; i++) {
		   sb.append(NUMBER2.charAt(random.nextInt(NUMBER2.length())));
		  }
		  return sb.toString();
		 }
	 
	 /**
	  * 返回一个定长的随机纯字母字符串(只包含大小写字母)
	  * 
	  * @param length
	  *            随机字符串长度
	  * @return 随机字符串
	  */
	 public static String generateMixString(int length) {
	  StringBuffer sb = new StringBuffer();
	  Random random = new Random();
	  for (int i = 0; i < length; i++) {
	   sb.append(LETTERCHAR.charAt(random.nextInt(LETTERCHAR.length())));
	  }
	  return sb.toString();
	 }
	 /**
	  * 返回一个定长的随机纯字母字符串(字母o除外只包含大小写字母)
	  * 
	  * @param length
	  *            随机字符串长度
	  * @return 随机字符串
	  */
	 public static String generateMixString2(int length) {
	  StringBuffer sb = new StringBuffer();
	  Random random = new Random();
	  for (int i = 0; i < length; i++) {
	   sb.append(LETTERCHAR2.charAt(random.nextInt(LETTERCHAR2.length())));
	  }
	  return sb.toString();
	 }
	 /**
	  * 返回一个定长的随机纯大写字母字符串(只包含大小写字母)
	  * 
	  * @param length
	  *            随机字符串长度
	  * @return 随机字符串
	  */
	 public static String generateLowerString(int length) {
	  return generateMixString(length).toLowerCase();
	 }
	 /**
	  * 返回一个定长的随机纯小写字母字符串(只包含大小写字母)
	  * 
	  * @param length
	  *            随机字符串长度
	  * @return 随机字符串
	  */
	 public static String generateUpperString(int length) {
	  return generateMixString(length).toUpperCase();
	 }
	 /**
	  * 返回一个定长的随机纯小写字母字符串(字母o除外，只包含大小写字母)
	  * @param length
	  * @return
	  * @author Javin
	  */
	 public static String generateUpperString2(int length){
		 return generateMixString2(length).toUpperCase();
	 }
	 /**
	  * 生成一个定长的纯0字符串
	  * 
	  * @param length
	  *            字符串长度
	  * @return 纯0字符串
	  */
	 public static String generateZeroString(int length) {
	  StringBuffer sb = new StringBuffer();
	  for (int i = 0; i < length; i++) {
	   sb.append('0');
	  }
	  return sb.toString();
	 }
	 /**
	  * 根据数字生成一个定长的字符串，长度不够前面补0
	  * 
	  * @param num
	  *            数字
	  * @param fixdlenth
	  *            字符串长度
	  * @return 定长的字符串
	  */
	 public static String toFixdLengthString(long num, int fixdlenth) {
	  StringBuffer sb = new StringBuffer();
	  String strNum = String.valueOf(num);
	  if (fixdlenth - strNum.length() >= 0) {
	   sb.append(generateZeroString(fixdlenth - strNum.length()));
	  } else {
	   throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth
	     + "的字符串发生异常！");
	  }
	  sb.append(strNum);
	  return sb.toString();
	 }
	 
	 public static String classSerirs(int length) {
		  StringBuffer sb = new StringBuffer();
		  Random random = new Random();
		  for (int i = 0; i < length; i++) {
		   sb.append(SERIES.charAt(random.nextInt(SERIES.length())));
		  }
		  return sb.toString();
	}
	 
}
